// 本地开发服务器启动脚本
// 这个脚本可以帮助你快速启动本地开发服务器

const http = require('http');
const url = require('url');

// 模拟的本地服务器
const server = http.createServer((req, res) => {
  const parsedUrl = url.parse(req.url, true);
  const path = parsedUrl.pathname;
  
  // 设置CORS头
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
  res.setHeader('Content-Type', 'application/json');
  
  // 处理OPTIONS请求
  if (req.method === 'OPTIONS') {
    res.writeHead(200);
    res.end();
    return;
  }
  
  console.log(`${new Date().toISOString()} - ${req.method} ${path}`);
  
  // 健康检查接口
  if (path === '/health' && req.method === 'GET') {
    res.writeHead(200);
    res.end(JSON.stringify({
      status: 'ok',
      message: '本地开发服务器运行正常',
      timestamp: new Date().toISOString(),
      environment: 'development'
    }));
    return;
  }
  
  // 用户注册接口
  if (path === '/register' && req.method === 'POST') {
    let body = '';
    req.on('data', chunk => {
      body += chunk.toString();
    });
    req.on('end', () => {
      try {
        const userData = JSON.parse(body);
        console.log('注册用户:', userData);
        
        res.writeHead(201);
        res.end(JSON.stringify({
          success: true,
          message: '注册成功（本地开发服务器）',
          user: {
            id: Date.now(),
            name: userData.name,
            email: userData.email,
            avatar: userData.avatar || '',
            createdAt: new Date().toISOString()
          }
        }));
      } catch (error) {
        res.writeHead(400);
        res.end(JSON.stringify({
          success: false,
          message: '请求数据格式错误'
        }));
      }
    });
    return;
  }
  
  // 用户登录接口
  if (path === '/login' && req.method === 'POST') {
    let body = '';
    req.on('data', chunk => {
      body += chunk.toString();
    });
    req.on('end', () => {
      try {
        const loginData = JSON.parse(body);
        console.log('登录请求:', loginData);
        
        // 简单的模拟登录验证
        if (loginData.email && loginData.password) {
          res.writeHead(200);
          res.end(JSON.stringify({
            success: true,
            message: '登录成功（本地开发服务器）',
            token: 'local-dev-token-' + Date.now(),
            user: {
              id: Date.now(),
              name: loginData.email.split('@')[0],
              email: loginData.email,
              avatar: '',
              createdAt: new Date().toISOString()
            }
          }));
        } else {
          res.writeHead(401);
          res.end(JSON.stringify({
            success: false,
            message: '邮箱或密码不能为空'
          }));
        }
      } catch (error) {
        res.writeHead(400);
        res.end(JSON.stringify({
          success: false,
          message: '请求数据格式错误'
        }));
      }
    });
    return;
  }
  
  // 获取用户信息接口
  if (path === '/user/info' && req.method === 'GET') {
    res.writeHead(200);
    res.end(JSON.stringify({
      success: true,
      user: {
        id: 1,
        name: '本地开发用户',
        email: 'dev@localhost.com',
        avatar: '',
        createdAt: new Date().toISOString()
      }
    }));
    return;
  }
  
  // 获取用户数量接口
  if (path === '/user/count' && req.method === 'GET') {
    res.writeHead(200);
    res.end(JSON.stringify({
      success: true,
      count: Math.floor(Math.random() * 100) + 1,
      message: '本地开发服务器数据'
    }));
    return;
  }
  
  // 404处理
  res.writeHead(404);
  res.end(JSON.stringify({
    success: false,
    message: '接口不存在',
    path: path
  }));
});

const PORT = 8081;
const HOST = 'localhost';

server.listen(PORT, HOST, () => {
  console.log('🚀 本地开发服务器已启动');
  console.log(`📍 服务器地址: http://${HOST}:${PORT}`);
  console.log(`🔍 健康检查: http://${HOST}:${PORT}/health`);
  console.log('📝 支持接口:');
  console.log('   - GET  /health - 健康检查');
  console.log('   - POST /register - 用户注册');
  console.log('   - POST /login - 用户登录');
  console.log('   - GET  /user/info - 获取用户信息');
  console.log('   - GET  /user/count - 获取用户数量');
  console.log('');
  console.log('💡 提示: 在网页端开发时，系统会自动连接此本地服务器');
  console.log('🛑 按 Ctrl+C 停止服务器');
});

// 优雅关闭
process.on('SIGINT', () => {
  console.log('\n🛑 正在关闭本地开发服务器...');
  server.close(() => {
    console.log('✅ 本地开发服务器已关闭');
    process.exit(0);
  });
});
